/*
 * Copyright 2013-2019 Xia Jun(3979434@qq.com).
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 ***************************************************************************************
 *                                                                                     *
 *                        Website : http://www.farsunset.com                           *
 *                                                                                     *
 ***************************************************************************************
 */
package com.workcell.workdata.im.service.impl;

import com.workcell.workdata.im.component.redis.ValidationCodeRedisTemplate;
import com.workcell.workdata.im.constant.Common;
import com.workcell.workdata.im.constant.ValidationCodeAction;
import com.workcell.workdata.im.service.ValidationCodeService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.Objects;
import java.util.Random;

@Service
public class ValidationCodeServiceImpl implements ValidationCodeService {

	@Resource
	private ValidationCodeRedisTemplate validationCodeRedisTemplate;

	@Override
	public String get(String telephone, ValidationCodeAction action) {

		StringBuilder builder = new StringBuilder();
		for (int i = 0; i < Common.VALIDATION_CODE_LENGTH; i ++){
			builder.append(new Random().nextInt(10));
		}

		String code = builder.toString();

		validationCodeRedisTemplate.save(telephone,action,code);
		return code;
	}

	@Override
	public boolean check(String telephone, String code, ValidationCodeAction action) {

		return Objects.equals(code,validationCodeRedisTemplate.get(telephone,action));
	}

}
